package com.jdy.haoduoaiteacher.view;///**
// * 
// */
//package com.jdy.haoduoaiteacher.view;
//
//import android.content.Context;
//import android.content.res.TypedArray;
//import android.graphics.Canvas;
//import android.graphics.Color;
//import android.graphics.Paint;
//import android.graphics.Paint.Style;
//import android.graphics.PointF;
//import android.graphics.RectF;
//import android.os.Handler;
//import android.util.AttributeSet;
//import android.util.Log;
//import android.view.MotionEvent;
//import android.view.View;
//
//import com.jdy.haoduoaiteacher.R;
//import com.jdy.haoduoaiteacher.intface.OnSliderToggleListener;
//import com.jdy.haoduoaiteacher.util.Tools;
//
///**
// * @author zp 2016-11-18 上午9:53:00
// */
//public class SliderToggleButton extends View {
//
//  private int WIDTH;
//
//  private int HEIGHT;
//
//  private final Paint mPaint;
//
//  private static final int BackgroundColor = Color.argb(255, 200, 200, 200);
//
//  private static final int ButtonColor = Color.argb(255, 249, 176, 48);
//
//  private Ellipse mBackgroundEllipse;
//
//  private Ellipse mButtonEllipse;
//
//  private PointF LEFT_MOST_CENTER;
//
//  private PointF RIGHT_MOST_CENTER;
//
//  private float ratio = 1;
//
//  private OnSliderToggleListener mOnSliderToggleListener;
//
//  private float buttonHeight;
//
//  private int buttonColor;
//
//  private static final String TAG = "SliderToggleButton";
//
//  /**
//   * @param context
//   * @param attrs
//   * @param defStyleAttr
//   */
//  public SliderToggleButton(Context context, AttributeSet attrs,
//      int defStyleAttr) {
//    super(context, attrs, defStyleAttr);
//    // TODO Auto-generated constructor stub
//
//    setWillNotDraw(false);
//
//    mPaint = new Paint();
//
//    mPaint.setAntiAlias(true);
//
//    mPaint.setStyle(Style.FILL_AND_STROKE);
//
//    mPaint.setColor(BackgroundColor);
//
//    this.ratio = Tools.getPixelRatio(context);
//
//    final TypedArray typedArray = context.obtainStyledAttributes(attrs,
//        R.styleable.SliderToggleButton);
//
//    buttonHeight = typedArray.getFloat(
//        R.styleable.SliderToggleButton_st_height, 75);
//
//    buttonColor = typedArray.getColor(R.styleable.SliderToggleButton_st_color,
//        ButtonColor);
//
//    typedArray.recycle();
//
//    if (isInEditMode())
//      return;
//
//  }
//
//  /**
//   * @param context
//   * @param attrs
//   */
//  public SliderToggleButton(Context context, AttributeSet attrs) {
//    this(context, attrs, 0);
//    // TODO Auto-generated constructor stub
//  }
//
//  /**
//   * @param context
//   */
//  public SliderToggleButton(Context context) {
//    this(context, null);
//    // TODO Auto-generated constructor stub
//  }
//
//  @Override
//  protected void onSizeChanged(int w, int h, int oldW, int oldH) {
//    WIDTH = w;
//
//    HEIGHT = h;
//
//    mBackgroundEllipse = new Ellipse(new PointF(WIDTH / 2, HEIGHT / 2),
//        HEIGHT / 2, WIDTH, BackgroundColor);
//
//    mButtonEllipse = new Ellipse(new PointF(WIDTH / 4, HEIGHT / 2), HEIGHT / 2,
//        WIDTH / 2, buttonColor);
//
//    LEFT_MOST_CENTER = new PointF(WIDTH / 4, HEIGHT / 2);
//
//    RIGHT_MOST_CENTER = new PointF(WIDTH * 3 / 4, HEIGHT / 2);
//
//    mButtonEllipse.setCenterRange(LEFT_MOST_CENTER, RIGHT_MOST_CENTER);
//
//    initParameters();
//    // mPaint.setShader(new RadialGradient(WIDTH / 2, HEIGHT / 2, WIDTH / 2,
//    // Color.TRANSPARENT, Color.BLACK, TileMode.MIRROR));
//  }
//
//  /**
//   * 
//   */
//  private void initParameters() {
//    // TODO Auto-generated method stub
//
//  }
//
//  @Override
//  protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
//
//    int desiredWidth = (int) (800 * this.ratio);
//
//    int desiredHeight = (int) (buttonHeight * this.ratio);
//
//    int widthMode = MeasureSpec.getMode(widthMeasureSpec);
//
//    int widthSize = MeasureSpec.getSize(widthMeasureSpec);
//
//    int heightMode = MeasureSpec.getMode(heightMeasureSpec);
//
//    int heightSize = MeasureSpec.getSize(heightMeasureSpec);
//
//    int width;
//
//    int height;
//
//    // Measure Width
//    if (widthMode == MeasureSpec.EXACTLY) {
//      // Must be this size
//      width = widthSize;
//    } else if (widthMode == MeasureSpec.AT_MOST) {
//      // Can't be bigger than...
//      width = Math.min(desiredWidth, widthSize);
//    } else {
//      // Be whatever you want
//      width = desiredWidth;
//    }
//
//    // Measure Height
//    if (heightMode == MeasureSpec.EXACTLY) {
//      // Must be this size
//      height = heightSize;
//    } else if (heightMode == MeasureSpec.AT_MOST) {
//      // Can't be bigger than...
//      height = Math.min(desiredHeight, heightSize);
//    } else {
//      // Be whatever you want
//      height = desiredHeight;
//    }
//
//    // MUST CALL THIS
//    setMeasuredDimension(width, height);
//  }
//
//  public void setOnSliderToggleListener(OnSliderToggleListener listener) {
//    mOnSliderToggleListener = listener;
//  }
//
//  public boolean getStartupState() {
//    if (mBackgroundEllipse != null)
//      return mBackgroundEllipse.getOnLeftSideState();
//    else
//      return true;
//  }
//
//  private class Ellipse {
//
//    private final PointF Center;
//
//    private final float R;
//
//    private int BodyColor = Color.argb(255, 249, 176, 48);
//
//    private final float TotalWidth;
//
//    private RectF cRectF;
//
//    private PointF leftMostCenter;
//
//    private PointF rightMostCenter;
//
//    private final Paint paint;
//
//    private boolean mOnLeftSide = true;
//
//    private PointF LEFT_MOST_CENTER;
//
//    private PointF RIGHT_MOST_CENTER;
//
//    private final float SAMPLES = 10;
//
//    private float STEP = 1;
//
//    private final float duration = 300;
//
//    private int timer = 0;
//
//    private final int framerate = 20;
//
//    private boolean animationRunning = false;
//
//    private final Handler canvasHandler = new Handler();
//
//    private final Runnable runnable = new Runnable() {
//      @Override
//      public void run() {
//        invalidate();
//      }
//    };
//
//    public Ellipse(PointF c, float r, float w, int color) {
//
//      this.Center = c;
//
//      LEFT_MOST_CENTER = c;
//
//      RIGHT_MOST_CENTER = c;
//
//      this.R = r;
//
//      this.TotalWidth = w;
//
//      this.BodyColor = color;
//
//      cRectF = new RectF(c.x - w / 2 + r, c.y - r, c.x + w / 2 - r, c.y + r);
//
//      leftMostCenter = new PointF(c.x - w / 2 + r, c.y);
//
//      rightMostCenter = new PointF(c.x + w / 2 - r, c.y);
//
//      paint = new Paint();
//
//      paint.setAntiAlias(true);
//
//      paint.setStyle(Style.FILL_AND_STROKE);
//
//      paint.setColor(BodyColor);
//
//    }
//
//    public boolean getOnLeftSideState() {
//      return mOnLeftSide;
//    }
//
//    private void updateCenter() {
//      cRectF = new RectF(Center.x - TotalWidth / 2 + R, Center.y - R, Center.x
//          + TotalWidth / 2 - R, Center.y + R);
//
//      leftMostCenter = new PointF(Center.x - TotalWidth / 2 + R, Center.y);
//
//      rightMostCenter = new PointF(Center.x + TotalWidth / 2 - R, Center.y);
//    }
//
//    public boolean contains(int x, int y) {
//      return cRectF.contains(x, y);
//    }
//
//    public void setCenterRange(PointF min, PointF max) {
//      LEFT_MOST_CENTER = min;
//
//      RIGHT_MOST_CENTER = max;
//
//      STEP = (max.x - min.x) / (duration / framerate);
//    }
//
//    public void draw(Canvas canvas) {
//
//      if (animationRunning) {
//        if (duration <= timer * framerate) {
//          animationRunning = false;
//          mOnLeftSide = !mOnLeftSide;
//          timer = 0;
//          invalidate();
//          return;
//        } else
//          canvasHandler.postDelayed(runnable, framerate);
//        timer++;
//
//        if (mOnLeftSide) {
//          Center.x += STEP;
//        } else {
//          Center.x -= STEP;
//        }
//        updateCenter();
//      }
//
//      canvas.drawRect(cRectF, paint);
//
//      canvas.drawCircle(leftMostCenter.x, leftMostCenter.y, R, paint);
//
//      canvas.drawCircle(rightMostCenter.x, rightMostCenter.y, R, paint);
//    }
//
//    /**
//     * 
//     */
//    public void toggle() {
//      // TODO Auto-generated method stub
//      animationRunning = true;
//      if (mOnSliderToggleListener != null)
//        mOnSliderToggleListener.onSliderToggle(!mOnLeftSide);
//    }
//
//  }
//
//  @Override
//  public void draw(Canvas canvas) {
//    super.draw(canvas);
//
//    mBackgroundEllipse.draw(canvas);
//
//    mButtonEllipse.draw(canvas);
//  }
//
//  private boolean mSelected = false;
//
//  int xTouch;
//
//  int yTouch;
//
//  @Override
//  public boolean onTouchEvent(final MotionEvent event) {
//    boolean handled = false;
//
//    // get touch event coordinates and make transparent circle from it
//    switch (event.getAction()) {
//    case MotionEvent.ACTION_DOWN:
//
//      xTouch = (int) event.getX(0);
//
//      yTouch = (int) event.getY(0);
//
//      this.mSelected = mButtonEllipse.contains(xTouch, yTouch);
//
//      invalidate();
//      handled = true;
//      break;
//
//    case MotionEvent.ACTION_MOVE:
//
//      Log.w(TAG, "Move");
//      // xTouch = (int) event.getX(0);
//      // yTouch = (int) event.getY(0);
//
//      if (this.mSelected) {
//        if (Math.abs(event.getX(0) - xTouch) > 5) {
//          mButtonEllipse.toggle();
//          this.mSelected = false;
//        }
//      }
//      invalidate();
//      handled = true;
//      break;
//
//    case MotionEvent.ACTION_UP:
//      Log.w(TAG, "Motion Up");
//      xTouch = (int) event.getX(0);
//      yTouch = (int) event.getY(0);
//      // this.mOptionButton.setDiscretePosition(xTouch, yTouch,
//      // mOptionAreaList);
//      this.mSelected = false;
//      invalidate();
//      handled = true;
//      break;
//
//    case MotionEvent.ACTION_CANCEL:
//      Log.w(TAG, "Motion Cancel");
//      xTouch = (int) event.getX(0);
//      yTouch = (int) event.getY(0);
//      // this.mOptionButton.setDiscretePosition(xTouch, yTouch,
//      // mOptionAreaList);
//      this.mSelected = false;
//      invalidate();
//      handled = true;
//      break;
//
//    default:
//      break;
//    }
//
//    return super.onTouchEvent(event) || handled;
//  }
//
// }
